package org.bopis.domain;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import com.boole.model.Usuario;

/**
 * Clase que almacena la informacion del usuario en su sesion.
 * Implementa el interfaz HttpSessionBindingListener para que se le notifique el timeout y asi pueda liberar los recursos de la sesion.
 * @author i.fernandezmolina
 *
 */
public class UserContainer implements HttpSessionBindingListener 
{
	private Usuario usuario;
  
	// Constructor por defecto.
	public UserContainer() 
  	{
	    super();
	    initialize();
  	}

	/**
	 * El contenedor llama a este metodo cuando se termina la sesion.
	 */
	public void valueUnbound(HttpSessionBindingEvent event) 
  	{
	    System.out.println( "Liberando sesion del usuario...");
	    cleanUp();
  	}
  	
	/**
	 * El contenedor llama a este metodo cuando comienza la sesion.
	 */
	public void valueBound(HttpSessionBindingEvent event) 
  	{
  		// No hacemos nada por ahora ...
  	}

	/**
	 * Inicializacion de los datos del usuario en sesion
	 */
	private void initialize() 
  	{
	    usuario = new Usuario();
  	}

	/**
	 * Liberamos los recursos de la sesion
	 */
	public void cleanUp() 
  	{
	    setUsuario(null);
  	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	
}
